package com.webermagem.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

import com.webermagem.DAO.PerfilDAO;
import com.webermagem.DAO.UsuarioDAO;
import com.webermagem.model.Perfil;
import com.webermagem.model.Usuario;

@ManagedBean
public class UsuarioController {
	
	private Usuario usuario;
	//private List listaPerfis; 
	private DataModel listaUsuarios;
	UsuarioDAO usuarioDao;
	PerfilDAO perfilDao;
	
	private List<SelectItem> listaPerfis;
    private Perfil perfilSelecionado;   

	public DataModel getListarUsuarios() {
		List<?> lista = usuarioDao.list(" from Usuario ");
		listaUsuarios = new ListDataModel(lista);
		return listaUsuarios;
	}
	public String prepararAdicionarUsuario(){
		usuario = new Usuario();
		
		listaPerfis = new ArrayList<SelectItem>();
		for (Object objeto : perfilDao.list(" from Perfil ")) {
			Perfil perfil = (Perfil)objeto;
            listaPerfis.add(new SelectItem(perfil, perfil.getDescricao()));  
        } 
		return "gerenciarUsuario";
	}
	public String prepararAlterarUsuario(){ 
		usuario = (Usuario)(listaUsuarios.getRowData());
		listaPerfis = new ArrayList<SelectItem>();
		for (Object objeto: perfilDao.list(" from Perfil ")) {
			Perfil perfil = (Perfil)objeto;
            listaPerfis.add(new SelectItem(perfil, perfil.getDescricao()));  
        } 
		return "gerenciarUsuario";
	}
	public String excluirUsuario(){
		Usuario usuarioTemp = (Usuario)(listaUsuarios.getRowData());
		usuarioDao.remove(usuarioTemp);
		return "index";
	}
	public String adicionarUsuario(){
		usuario.setPerfil(perfilSelecionado);
		usuarioDao.save(usuario);
		return "index";
	}
	public String alterarUsuario(){
		usuario.setPerfil(perfilSelecionado);
		usuarioDao.update(usuario);
		return "index";
	}
	public UsuarioDAO getUsuarioDao() {
		return usuarioDao;
	}
	public void setUsuarioDao(UsuarioDAO usuarioDao) {
		this.usuarioDao = usuarioDao;
	}
	public PerfilDAO getPerfilDao() {
		return perfilDao;
	}
	public void setPerfilDao(PerfilDAO perfilDao) {
		this.perfilDao = perfilDao;
	}
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public List getListaPerfis() {
		return listaPerfis;
	}
	public void setListaPerfis(List listaPerfis) {
		this.listaPerfis = listaPerfis;
	}
	public Perfil getPerfilSelecionado() {
		return perfilSelecionado;
	}
	public void setPerfilSelecionado(Perfil perfilSelecionado) {
		this.perfilSelecionado = perfilSelecionado;
	}

}
